package ProyectoX;

import javax.swing.ImageIcon;
import javax.swing.JLabel;


/**
 * Clase abstracta ArmaJugador extiende a Dibujable 
 */
public abstract class ArmaJugador extends Dibujable{
	protected int NivelArma;
	protected Nivel MiNivel;
	protected NaveJugador Jugador;
	protected int Potencia;
	
	
	/**
	 * Constructor de ArmaJugador
	 * Inicializa los atributos.
	 */
	public ArmaJugador(Nivel Nivel, NaveJugador nj, int na){
		NivelArma = na;
		MiNivel = Nivel;
		Jugador = nj;
	}
	
	/**
	 * Retorna verdadero si el arma jugador esta en pantalla
	 * Falso caso contrario.
	 * 
	 */
	public boolean estaEnPantalla(){
		boolean esta = false;
		if ((this.getX() < MiNivel.obtenerAnchoNivel()) && (this.getX()>10)){
			if (this.getY() < MiNivel.obtenerAltoNivel() && this.getY()>10)
				esta = this.isVisible();
		}
		return esta;
	}
	
	/**
	 * Mueve el arma jugador segun su nivel.
	 */
	public void Mover(){
		switch(NivelArma){
		case 1: Potencia = 10;
		break;
		case 2: Potencia = 20;
		break;
		case 3: Potencia = 30;
		break;
		}
			
		Mover(Potencia);
	}
	
	
	/**
	 * Mueve el arma jugador
	 * */
	protected void Mover(int i) {
		this.setLocation(this.getX() + i,this.getY());
	}
	
	
	/**
	 * Pone como no visible el arma jugador
	 * */
	public  void quitarArma(){
		this.setVisible(false);	
	}
	
	
	/**
	 * Verifica si el arma jugador colisiono con alguna nave enemiga
	 * de ser asi ataca la nave enemiga 
	 * y setea el puntaje de la nave jugador.
	 */
	protected synchronized void Colisiones(){
		
		if(this.estaEnPantalla()){
			
			for(NaveEnemiga Nave : MiNivel.obtenerNavesEnemigas()) {
				
				if(Nave.estaEnPantalla()){

					if(Nave.alcanzoObjeto(this)){
						int puntos= Nave.serAtacado();
						MiNivel.obtenerNaveJugador().setPuntaje(puntos);
						MiNivel.juego.jLabelPuntos.setText(" "+ MiNivel.obtenerNaveJugador().obtenerPuntaje());
						try {
							Thread.sleep(75);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						quitarArma();
						
						if(! Nave.vive()){
							Nave.Morir();
						}
					}
				}
			}
			
		}
	}
	
	
}